package com.sskj.common.util;

import java.util.Set;

public class FileUtil {

    /**
     * 通过文件名获取文件后缀名
     * @param fileName 文件名
     * @return 文件后缀名，全小写；若无后缀则返回 null
     */
    public static String extName(String fileName) {
        if (fileName == null || fileName.isEmpty()) {
            return null;
        }

        int lastDotIndex = fileName.lastIndexOf('.');
        // 不存在点号 或 点号在最后一位（如 ".gitignore" 或 "file." 不视为有效后缀）
        if (lastDotIndex == -1 || lastDotIndex == fileName.length() - 1) {
            return null;
        }

        // 点号前必须有内容（防止 ".tar.gz" 这类被误判为 "tar.gz"，我们只取最后一个点后的部分）
        // 这里按常见需求：取最后一个点之后的部分作为后缀
        String ext = fileName.substring(lastDotIndex + 1);

        // 排除包含路径分隔符的情况（避免把路径中的点当作后缀分隔符）
        if (ext.contains("/") || ext.contains("\\")) {
            return null;
        }

        return ext.toLowerCase();
    }

    /**
     * 判断是否是图片类型文件
     * @param filename 文件名称
     * @return 如果文件是图片类型，则返回 true；否则返回 false
     */
    public static boolean isImage(String filename) {
        if (filename == null || filename.isEmpty()) {
            return false;
        }

        // 定义一组支持的图片扩展名
        Set<String> imageExtensions = Set.of("jpg", "jpeg", "png", "gif", "bmp", "tiff", "webp");

        // 获取文件扩展名并转为小写
        String extension = extName(filename).toLowerCase();

        // 检查文件扩展名是否在支持的图片扩展名集合中
        return imageExtensions.contains(extension);
    }
}
